// 一个伪代码

const store = {
  state: {},

  mutations: {
    aaa(state, payload) {},
  },

  actions: {
    abc(context, payload) {},
  },

  commit(name, payload) {
    if (typeof name === "object") {
      // name.type // aaa
      this.mutations[name.type](this.state, name);
    } else {
      this.mutations[name](this.state, payload);
    }
  },

  dispatch(name, payload) {
    if (typeof name === "object") {
      // name.type abc
      this.actions[name.type](
        {
          state: this.state,
          // ...
        },
        name
      );
    } else {
      // name abc
      this.actions[name](
        {
          state: this.state,
          // ...
        },
        payload
      );
    }
  },
};

// 两个参数的形式
store.commit("突变的名字", {});
// 对象形式
store.commit({
  type: "aaa",
  name: "123",
});

// 两个参数的形式
store.dispatch("abc", {});
// 对象形式
store.dispatch({
  type: "abc",
  name: "zvzxcv",
});

// 这个文件的代码，是不能执行的。

$on("123213", () => {});

$emit("123213");
